package com.hunzi.domain;

import java.util.LinkedHashMap;
import java.util.Map;

/*
描述购物车
* */


public class Cart {
    //LinkedHashMap：特点 键相同值覆盖，有序
    //购物项的Map<商品id , 购物项> 集合
    private Map<Integer , CartItem> cartItems = new LinkedHashMap<> (  );
    //总价
    private double total ;

    //1、添加购物项的功能
    public void addCartItem(CartItem cartItem){
        //获得要添加购物项key 商品的id
        Integer id = cartItem.getItem ().getId ();
        //判断是否已经存在该购物项
        if (cartItems.containsKey ( id )){
            //如果存在先从map集合中取出原来的购物项
            CartItem cartItem_old = cartItems.get ( id );
            //更新该项购买的数量 现在的数量 = 添加的数量+原来的数量
            cartItem_old.setCount ( cartItem.getCount ()+cartItem_old.getCount () );
            //更新总价

        }else {
            // 如果不存在直接添加购物项
            cartItems.put ( id , cartItem );
            //更新总价
        }
        //更新总价
        total = total +cartItem.getSubtotal ();

    }
    //2、删除购物车的功能
    public void delete(Integer id){
        //根据id 就key值删除购物项
        //remove 方法放回的是被上传的购物项
        CartItem remove = cartItems.remove ( id );
        //更新总价
        total = total - remove.getSubtotal ();
    }
    //3、清空购物车
    public void clear(){
        cartItems.clear ();
        total=0 ;
    }




    public Cart() {
    }


    public Cart(Map<Integer, CartItem> cartItems, double total) {
        this.cartItems = cartItems;
        this.total = total;
    }

    public Map<Integer, CartItem> getCartItems() {
        return cartItems;
    }

    public void setCartItems(Map<Integer, CartItem> cartItems) {
        this.cartItems = cartItems;
    }

    public double getTotal() {
        return total;
    }

    public void setTotal(double total) {
        this.total = total;
    }
}
